目录pg_attribute
存储有关表列的信息。数据库中的每一个表的每一个列都恰好在pg_attribute
中有一行。(这其中也会有索引的属性项,并且事实上所有具有pg_class
项的对象在这里都有属性项entries)。
列名称 | 列类型 | 描述 |
|
| 此列所属的表。 |
|
| 列名称。 |
|
| 此列的数据类型。 |
|
|
|
|
| 本列类型的 |
|
| 列的编号。一般列从1开始向上编号。系统列,如 |
|
| 如果该列是一个数组类型,这里就是其维度数;否则为0。 (在目前一个数组的维度数并不被强制,因此任何非零值都能有效地表明“这是一个数组”)。 |
|
| 在存储中总是为-1,但是当被载入到一个内存中的行描述符后,这里可能会被更新为属性在行内的偏移。 |
|
|
|
|
| 该列类型的 |
|
| 通常是该列类型的 |
|
| 该列类型的 |
|
| 这表示一个非空约束。 |
|
| 该列有一个默认表达式或生成的表达式,在此情况下在 |
|
| 该列在行中完全缺失时会用到这个列的值,如果在行创建之后增加一个有非易失 |
|
| 如果是一个零字节( |
|
| 如果为零字节( |
|
| 该列被删除且不再有效。一个删除的列仍然物理存在于表中,但是会被分析器忽略并因此无法通过SQL访问。 |
|
| 该列是由关系本地定义的。注意一个列可以同时是本地定义和继承的。 |
|
| 该列的直接祖先的编号。一个具有非零编号祖先的列不能被删除或者重命名。 |
|
| 该列被定义的排序规则,如果该列不是一个可排序数据类型则为0。 |
|
| 列级访问权限, 如果此列上已有特别授予的权限。 |
|
| 属性级选项,以“keyword=value”形式的字符串表示。 |
|
| 属性级的外部数据包装器选项,以“keyword=value”形式的字符串表示。 |
|
| 这个列中是一个含有一个元素的数组,其中的值被用于该列在行中完全缺失时,如果在行创建之后增加一个有非易失 |
在一个被删除的列的pg_attribute
的项中,atttypid
被重置为 0,但attlen
以及其他从pg_type
拷贝的域仍然有效。这种安排用于处理一种情况,即被删除列的数据类型后来被删除,并且因此不再有相应的pg_type
行。attlen
和其他域可以被用来解释表的一行的内容。